﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SpiceNet.Models.BSIM3p
{
    /// <summary>
    /// A structure containing all size-dependent parameters of a BSIM3 model
    /// </summary>
    public class SizeDependParam
    {
        public double Width;
        public double Length;

        public double BSIM3cdsc;
        public double BSIM3cdscb;
        public double BSIM3cdscd;
        public double BSIM3cit;
        public double BSIM3nfactor;
        public double BSIM3xj;
        public double BSIM3vsat;
        public double BSIM3at;
        public double BSIM3a0;
        public double BSIM3ags;
        public double BSIM3a1;
        public double BSIM3a2;
        public double BSIM3keta;
        public double BSIM3nsub;
        public double BSIM3npeak;
        public double BSIM3ngate;
        public double BSIM3gamma1;
        public double BSIM3gamma2;
        public double BSIM3vbx;
        public double BSIM3vbi;
        public double BSIM3vbm;
        public double BSIM3vbsc;
        public double BSIM3xt;
        public double BSIM3phi;
        public double BSIM3litl;
        public double BSIM3k1;
        public double BSIM3kt1;
        public double BSIM3kt1l;
        public double BSIM3kt2;
        public double BSIM3k2;
        public double BSIM3k3;
        public double BSIM3k3b;
        public double BSIM3w0;
        public double BSIM3nlx;
        public double BSIM3dvt0;
        public double BSIM3dvt1;
        public double BSIM3dvt2;
        public double BSIM3dvt0w;
        public double BSIM3dvt1w;
        public double BSIM3dvt2w;
        public double BSIM3drout;
        public double BSIM3dsub;
        public double BSIM3vth0;
        public double BSIM3ua;
        public double BSIM3ua1;
        public double BSIM3ub;
        public double BSIM3ub1;
        public double BSIM3uc;
        public double BSIM3uc1;
        public double BSIM3u0;
        public double BSIM3ute;
        public double BSIM3voff;
        public double BSIM3vfb;
        public double BSIM3delta;
        public double BSIM3rdsw;
        public double BSIM3rds0;
        public double BSIM3prwg;
        public double BSIM3prwb;
        public double BSIM3prt;
        public double BSIM3eta0;
        public double BSIM3etab;
        public double BSIM3pclm;
        public double BSIM3pdibl1;
        public double BSIM3pdibl2;
        public double BSIM3pdiblb;
        public double BSIM3pscbe1;
        public double BSIM3pscbe2;
        public double BSIM3pvag;
        public double BSIM3wr;
        public double BSIM3dwg;
        public double BSIM3dwb;
        public double BSIM3b0;
        public double BSIM3b1;
        public double BSIM3alpha0;
        public double BSIM3alpha1;
        public double BSIM3beta0;


        /* CV model */
        public double BSIM3elm;
        public double BSIM3cgsl;
        public double BSIM3cgdl;
        public double BSIM3ckappa;
        public double BSIM3cf;
        public double BSIM3clc;
        public double BSIM3cle;
        public double BSIM3vfbcv;
        public double BSIM3noff;
        public double BSIM3voffcv;
        public double BSIM3acde;
        public double BSIM3moin;


        /* Pre-calculated constants */
        public double BSIM3dw;
        public double BSIM3dl;
        public double BSIM3leff;
        public double BSIM3weff;

        public double BSIM3dwc;
        public double BSIM3dlc;
        public double BSIM3leffCV;
        public double BSIM3weffCV;
        public double BSIM3abulkCVfactor;
        public double BSIM3cgso;
        public double BSIM3cgdo;
        public double BSIM3cgbo;
        public double BSIM3tconst;

        public double BSIM3u0temp;
        public double BSIM3vsattemp;
        public double BSIM3sqrtPhi;
        public double BSIM3phis3;
        public double BSIM3Xdep0;
        public double BSIM3sqrtXdep0;
        public double BSIM3theta0vb0;
        public double BSIM3thetaRout;

        public double BSIM3cof1;
        public double BSIM3cof2;
        public double BSIM3cof3;
        public double BSIM3cof4;
        public double BSIM3cdep0;
        public double BSIM3vfbzb;
        public double BSIM3ldeb;
        public double BSIM3k1ox;
        public double BSIM3k2ox;
    }
}
